/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package testes;

import bancodados.ConexaoBD;
import cliente.Cliente;
import detalhepedido.DetalhePedido;
import estadospedido.EstadoPedido;
import fachada.Fachada;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import pedido.Pedido;
import produto.Produto;
import tipoformapgto.TipoFormaPgto;

/**
 *
 * @author Anderson
 */
public class TesteCliente {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ConexaoBD conexaoBD;
        Fachada fachada;

        try {
            fachada = Fachada.getFachada();
            //Criando uma transação
            conexaoBD = ConexaoBD.getConexao();
            conexaoBD.begin();

            //Criando um cliente
            Cliente clienteTemp = new Cliente();
            clienteTemp = new Cliente(0, "Anderson", "av besteira 2", 2, "", "boa vista", "recife", "PE", "Brazil", "anderflash", "lkdsfjsa", "324242", "anderflash", "senha");
            
            
            //Adicionando o cliente
            fachada.adicionar(clienteTemp);
            System.out.println("Cliente adicionado");
            
            //Criando outro cliente
            clienteTemp = new Cliente();
            clienteTemp.setNome("Marlon");
            clienteTemp.setEndereco("Av algo");
            clienteTemp.setCidade("Recife");
            
            //Adicionando outro cliente
            fachada.adicionar(clienteTemp);
            System.out.println("Outro cliente adicionado");
            
            //Procurando um cliente
            Cliente criterio = new Cliente();
            criterio.setNome("Marlon");
            Cliente clienteProcurado = new Cliente();
            clienteProcurado = fachada.procurar(criterio);
            System.out.println("Cliente achado");
            System.out.println("O endereço do cliente achado eh: " + clienteProcurado.getEndereco());

            //Atualizando um cliente
            clienteProcurado.setEstado("Pernambuco");
            fachada.atualizar(clienteProcurado);
            System.out.println("Cliente atualizado");

            //Adicionar um produto
            Produto produto = new Produto();
            produto.setNome("Mouse");
            produto.setDescricao("muito legal");
            produto.setPreco(40);
            produto.setQuantidade(20);
            fachada.adicionar(produto);
            produto = fachada.procurar(produto);
            System.out.println("Produto criado");


            //Adicionar um tipo de forma de pagamento
            TipoFormaPgto tipoFormaPgto = new TipoFormaPgto();
            tipoFormaPgto.setDescricao("Boleto");
            fachada.adicionar(tipoFormaPgto);
            tipoFormaPgto = fachada.procurar(tipoFormaPgto);
            System.out.println("Tipo de Forma de Pagamento criado");

            //Inserir um estado de pedido
            EstadoPedido estadoPedido = new EstadoPedido();
            estadoPedido.setNome("Perdeu Playboy");
            fachada.adicionar(estadoPedido);
            estadoPedido = fachada.procurar(estadoPedido);

            //Criar uma compra
            Pedido pedido = new Pedido();
            pedido.setCliente(clienteProcurado.getId());
            pedido.setEstado(estadoPedido.getId());
            pedido.setFormaPgto(tipoFormaPgto.getId());
            fachada.adicionar(pedido);
            pedido = fachada.procurar(pedido);
            System.out.println("Pedido criado");


            DetalhePedido detalhePedido = new DetalhePedido();
            detalhePedido.setPedido(pedido.getId());
            detalhePedido.setProduto(produto.getId());
            detalhePedido.setQuantidade(2);
            fachada.adicionar(detalhePedido);
            detalhePedido = fachada.procurar(detalhePedido);
            System.out.println("Detalhes do pedido criado");
            conexaoBD.commit();
        } catch (SQLException ex) {
            Logger.getLogger(TesteCliente.class.getName()).log(Level.SEVERE, null, ex);
            
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(TesteCliente.class.getName()).log(Level.SEVERE, null, ex);
            
        }
        try {
            ConexaoBD.getConexao().rollback();
        } catch (Exception ex) {
            Logger.getLogger(TesteCliente.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

}
